/**
 * 版权所有 2009-2012山东新北洋信息技术股份有限公司
 * 保留所有权利。
 */
package com.linyaonan.leetcode.easy._172;

import java.math.BigInteger;

/**
 * 给定一个整数 n，返回 n! 结果尾数中零的数量。
 *
 * 示例 1:
 *
 * 输入: 3
 * 输出: 0
 * 解释: 3! = 6, 尾数中没有零。
 * 示例 2:
 *
 * 输入: 5
 * 输出: 1
 * 解释: 5! = 120, 尾数中有 1 个零.
 * 说明: 你算法的时间复杂度应为 O(log n) 。
 *
 * @ProjectName: leetcode
 * @Package: com.linyaonan.leetcode.easy._172
 * @ClassName: FactorialTrailingZeroes
 * @Author: linyaonan
 * @Date: 2019/11/18 11:01
 */
public class FactorialTrailingZeroes {
    public int trailingZeroes(int n) {
        int count = 0;
        while(n >= 5) {
            count += n / 5;
            n /= 5;
        }
        return count;
    }

    public static String getNum(int count) {
        BigInteger result = new BigInteger("1");
        int p = 1;
        while (count > p) {
            p++;
            BigInteger pInt = new BigInteger(String.valueOf(p));
            result = result.multiply(pInt);
        }
        return result.toString();
    }

    public static int getEndZero(String str) {
        char[] chars = str.toCharArray();
        int result = 0;
        for (int i = chars.length - 1; i >= 0; i--) {
            if (chars[i] == '0') {
                result++;
            } else {
                break;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        for (int i = 0; i < 1000; i++) {
            String num = getNum(i);
            int endZero = getEndZero(num);
            System.out.println(i + ":" + endZero);
        }
    }

}
